package com.syt.service.service;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.syt.service.pojo.PhoneUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

/**
 * @author ：syt
 * @date ：Created in 2019-10-06 19:50
 * @description：Token登录验证 服务
 */
@Service
public class TokenService {

    @Autowired
    RedisTemplate redisTemplate;

    /**
     *  获取token
      */
    public String getToken(PhoneUser user) {
        // 登录成功获取 token
        String token = JWT.create().withAudience(String.valueOf(user.getUserId()))
                .sign(Algorithm.HMAC256(user.getUserPassword()));
        // 缓存token
        redisTemplate.opsForSet().add("tokens", token);
        return token;
    }


    /**
     * 判断token是否过期
     * @param token
     * @return
     */
    public Boolean judgToken(String token) {
        return redisTemplate.opsForSet().isMember("tokens", token);
    }

    /**
     * 清除 redis 中的 token 用来退出登录
     * @param token
     */
    public void cleanToken(String token) {
        redisTemplate.opsForSet().remove("tokens", token);
    }
}
